home *** CD-ROM | disk | FTP | other *** search
/ Amiga News 95 / Amiga News 95.iso / dpat / dpat61 / timer / timer.s < prev    next >
Encoding:
Text File  |  1994-05-10  |  37.3 KB  |  1,340 lines

  1. ; **********************************************************
  2. ; ****                                                  ****
  3. ; ****  Programme: Affiche la date et l'heure           ****
  4. ; ****             plus la fête du jour et de demain    ****
  5. ; ****                                                  ****
  6. ; **********************************************************
  7. ; ****                                                  ****
  8. ; ****  Auteur: Christian KASPAR                        ****
  9. ; ****                                                  ****
  10. ; ****  Date:   09 Août 1993                            ****
  11. ; ****                                                  ****
  12. ; ****  Version:1.01                                    ****
  13. ; ****                                                  ****
  14. ; ****  Source pour assembleur Seka                     ****
  15. ; ****                                                  ****
  16. ; **********************************************************
  17. ; ****                                                  ****
  18. ; **** Le programme se lance depuis la fenêtre CLI et   ****
  19. ; **** affiche la date et l'heure en français, ainsi    ****
  20. ; **** que la fête du jour et du jour suivant.          ****
  21. ; **** 664 prénoms sont répertoriés, plus quelques      ****
  22. ; **** fêtes particulières (1er Mai, fêtes religieuses) ****
  23. ; ****                                                  ****
  24. ; **** Détail amusant, ce programme ne fonctionnera     ****
  25. ; **** parfaitement "que" jusqu'au 19 Janvier 2046      ****
  26. ; **** 3 heures 14 minutes et 7 secondes...             ****
  27. ; **** Cela provient d'un dépassement de la valeur 2^31 ****
  28. ; **** pour les secondes du système (Sys_sec)           ****
  29. ; **** Dès lors l'instruction CMP.L D3,D0 qui se trouve ****
  30. ; **** dans NextAn: considère le chiffre comme étant    ****
  31. ; **** négatif, ce qui se traduit par des résultats     ****
  32. ; **** bizarres... (mais pas de Software Failure)       ****
  33. ; **** Je ne pense pas qu'il soit utile de "fixer" ce   ****
  34. ; **** petit bug, mais si le coeur vous en dit...       ****
  35. ; ****                                                  ****
  36. ; **** A noter que je n'ai trouvé aucun programme       ****
  37. ; **** du style DATE ou TODAY qui fonctionne            ****
  38. ; **** correctement après la date fatidique. Seul le    ****
  39. ; **** TIME des préférences gère parfaitement le        ****
  40. ; **** problème (encore heureux!).                      ****
  41. ; ****                                                  ****
  42. ; **********************************************************
  43. ; ****                                                  ****
  44. ; **** Pour pouvoir lancer le programme depuis le CLI   ****
  45. ; **** il faut remplacer les ILLEGAL par RTS, modifier  ****
  46. ; **** les paramètres de la fenêtre (voir listing) et   ****
  47. ; **** supprimer la commande PAUSE (facultatif) avant   ****
  48. ; **** de compiler la source.                           ****
  49. ; ****                                                  ****
  50. ; **********************************************************
  51. ; ****                                                  ****
  52. ; **** La source (1340 lignes) et l'exécutable de ce    ****
  53. ; **** programme sont librement distribuables           ****
  54. ; **** SOUS LEUR FORME ORIGINELLE UNIQUEMENT            ****
  55. ; **** Ils ne peuvent être vendus sauf en tant que      ****
  56. ; **** partie d'un disque du Domaine Publique.          ****
  57. ; **** Toute modification du code (ajout de messages    ****
  58. ; **** dans les données fêtes) doit se faire sur une    ****
  59. ; **** copie du programme source et servir dans un but  ****
  60. ; **** purement individuel.                             ****
  61. ; ****                                                  ****
  62. ; **********************************************************
  63. ; ****                                                  ****
  64. ; **** Si vous aimez ce programme, vous pouvez penser   ****
  65. ; **** à l'auteur en m'envoyant une carte postale pour  ****
  66. ; **** ma collection (si possible représentant un       ****
  67. ; **** coucher de soleil). Ça serait sympa...           ****
  68. ; ****                                                  ****
  69. ; **** Pour toute suggestion, erreur décélée, etc...    ****
  70. ; **** n'hésitez pas à m'écrire.                        ****
  71. ; ****                                                  ****
  72. ; ****                                                  ****
  73. ; ****          Christian KASPAR                        ****
  74. ; ****          6bis, Route de Soultz                   ****
  75. ; ****          68270 WITTENHEIM                        ****
  76. ; ****          FRANCE                                  ****
  77. ; ****                                                  ****
  78. ; **********************************************************
  79.  
  80. Execbase        = 4
  81. CurrentTime     = -84
  82. Openlibrary     = -552
  83. CloseLibrary    = -414
  84. Delay           = -$C6
  85. Open            = -$1E
  86. Close           = -$24
  87. Write           = -$30
  88. Mode_Newfile    = 1006
  89.  
  90. ; *****************************
  91. ; ****                     ****
  92. ; **** Programme Principal ****
  93. ; ****                     ****
  94. ; *****************************
  95.  
  96. START:
  97.  
  98. JSR     OpenIntLib(pc)
  99. CMP.L   #0,D0
  100. BEQ.L   Erreur
  101. MOVE.L  D0,IntBase
  102. JSR     GetCurrentTime(pc)
  103. JSR     Calculan(pc)
  104. JSR     OpenDos(pc)             ; Saute sous-routine ouvrir Dos
  105. CMP.L   #0,D0                   ; Librairie bien ouverte?
  106. BEQ.L   CloseIntLib             ; Sinon -> aller ... (et finir)
  107. MOVE.L  D0,Dosbase              ; Se rappeler adresse de Dos
  108. JSR     OpenWin(pc)             ; Saute sous-routine ouvrir fenet.
  109. CMP.L   #0,D0                   ; Controle d'ouverture
  110. BEQ.L   CloseDos                ; Si erreur -> finir programme
  111. MOVE.L  D0,WinHandle            ; Se rappeler adresse fenetre
  112. JSR     EcritDateHeure(pc)
  113. JSR     Ecrit_aujourd(pc)
  114. JSR     Affichefete(pc)
  115. JSR     Retour_Chariot(pc)
  116. JSR     Ecrit_demain(pc)
  117. JSR     Jour_suivant(pc)
  118. JSR     Affichefete(pc)
  119. JSR     Retour_chariot(pc)
  120. JSR     Pause(pc)
  121. JMP     CloseWin(pc)
  122.  
  123. ; **** Fin du programme principal ****
  124.  
  125. ; ****  Ouverture Intuition.Library ****
  126.  
  127. OPENINTLIB:
  128.  
  129. MOVE.L  Execbase,A6
  130. MOVE.L  #0,D0
  131. MOVE.L  #IntName,A1
  132. JSR     OpenLibrary(A6)
  133. RTS
  134.  
  135. ; **** Lire le temps en secondes ****
  136.  
  137. GETCURRENTTIME:
  138.  
  139. LEA     Sys_Sec(pc),A0
  140. LEA     Sys_microSec(pc),A1
  141. MOVE.L  IntBase(pc),A6
  142. JSR     CurrentTime(A6)
  143. RTS
  144.  
  145. ; **** Calcul de l'année actuelle ****
  146.  
  147. CalculAn:
  148.  
  149. MOVE.L  sys_sec(pc),D0  ; secondes système dans D0
  150. MOVE.L  #1978,D1        ; année de départ = 1978
  151.  
  152. Bissex:
  153.  
  154. MOVE.L  D1,D2           ; Copier D1 dans D2
  155. DIVU    #4,D2           ; Diviser D2 par 4
  156. ANDI.L  #$FFFF0000,D2   ; ET logique => on garde les bits de poids
  157.                         ; fort (les chiffres après la virgule)
  158.                         ; Si il reste zéro, l'année est divisible
  159.                         ; par quatre et donc bissextile
  160. BNE.S   PasBissex       ; Si pas zéro aller à PasBissex
  161.  
  162. OuiBissex:
  163.  
  164. MOVE.L  #[366*24*3600],D3
  165. BRA.S   SuiteAn
  166.  
  167. PasBissex:
  168.  
  169. MOVE.L  #[365*24*3600],D3
  170.  
  171. SuiteAn:
  172.  
  173. CMP.L   D3,D0
  174. BLT.S   PasAutreAn
  175. SUB.L   D3,D0
  176. ADDQ.L  #1,D1
  177. BRA.S   Bissex
  178.  
  179. PasAutreAn:
  180.  
  181. MOVE.W  D1,Annee        ; Année actuelle stockée dans Année
  182.  
  183. HeuresMinutes:
  184.  
  185. DIVU    #3600,D0        ; Nombre d'heures de l'année en cours
  186. SWAP    D0              ; Nombre de minutes de l'année=mot haut
  187. CLR.L   D1
  188. MOVE.W  D0,D1           ; Nombres de minutes dans D1
  189. CLR.W   D0
  190. SWAP    D0              ; Nombres d'heures dans D0
  191.  
  192. JDL:
  193. DIVU    #24,D0
  194. ADDQ.W  #1,D0
  195. MOVE.W  D0,Quantieme            ; le D0 ième jour de l'année
  196. CLR.W   D0
  197. SWAP    D0
  198. MOVE.B  d0,Heures
  199. DIVU    #60,D1
  200. MOVE.B  D1,Minutes
  201. SWAP    D1
  202. MOVE.B  D1,Secondes
  203.  
  204. ; **** Calculer le mois ****
  205.  
  206. ; **** Est-on atuellement dans une année bisextile? ****
  207.  
  208. CLR.L   D0
  209. MOVE.W  Annee(pc),D0
  210. DIVU    #4,D0
  211. ANDI.L  #$FFFF0000,D0
  212. BNE.s   Normal
  213.  
  214. ; **** Si oui, ajouter 1 au mois de Février ****
  215.  
  216. LEA     Jours_du_Mois(pc),A0
  217. ADDQ.W  #1,2(A0)                ; 2 car il s'agit de MOTS !!!
  218.  
  219. ; **** Année non bisextile ****
  220.  
  221. Normal:
  222.  
  223. CLR.L   D0
  224. MOVE.W  Quantieme(pc),D0        ; Jour de l'année dans D0
  225. LEA     Jours_du_Mois(pc),A0
  226. MOVE.B  #01,D1                  ; On commence au moins au mois 1
  227.  
  228. Bouclemois:
  229.  
  230. CMP.W   (A0),D0
  231. BLS.S   Nonextmonth
  232. SUB.W   (A0)+,D0
  233. ADDQ.B  #1,D1
  234. BRA.S   Bouclemois
  235.  
  236. NoNextmonth:
  237.  
  238. MOVE.B  D1,Mois
  239. MOVE.B  D0,Jour
  240.  
  241. ; **********************************************************
  242. ; ****                                                  ****
  243. ; **** Calcul du jour de la semaine                     ****
  244. ; **** le 1er Janvier 1978 etait un dimanche            ****
  245. ; **** on calcule le nombre de jours écoulés depuis     ****
  246. ; **** ce jour et on le divise par 7 (= modulo7, voir   ****
  247. ; **** un cours de math...)                             ****
  248. ; ****                                                  ****
  249. ; **********************************************************
  250.  
  251. MOVE.L  Sys_sec(pc),D0  ; Nombre de secondes dans D0
  252. DIVU    #3600*12,D0     ; Division par 12*3600
  253. ANDI.L  #$0000FFFF,D0   ; On oublie la virgule
  254. DIVU    #2,D0           ; Division par deux
  255. ANDI.L  #$0000FFFF,D0   ; On oublie la virgule
  256.                         ; (Car 24*3600>$FFFF et DIVU)
  257.                         ; Ne marche qu'avec des MOTS
  258. CMP.W   #0,D0           ; Si zéro = 1er Janvier 78
  259. BEQ.S   Le_bon_jour     ; Aller directement à l'ecriture
  260. MOVE.L  D0,D1           ; Copier D0 dans D1
  261. DIVU    #7,D1           ; Diviser D1 par 7 (= 1  semaine)
  262. ANDI.L  #$0000FFFF,D1   ; Oublier la virgule
  263. MULU    #7,D1           ; Multiplier par 7
  264. SUB.W   D1,D0           ; Soustraire D1 de D0
  265.  
  266. Le_bon_Jour:
  267.  
  268. MOVE.B  D0,Jour_semaine
  269. RTS
  270.  
  271. ; **** Fin de la partie calcul ****
  272.  
  273. ;*** Ouverture de la Dos.library ***
  274.  
  275. OpenDos:
  276.  
  277. MOVE.L  Execbase,A6     ; Met adresse Execbase dans A6
  278. MOVE.L  #Dosname,A1     ; Met nom librairie dans A1
  279. MOVE.L  #0,D0           ; Met valeur 0 dans D0
  280. JSR     OpenLibrary(A6) ; Routine interne -> ouverture Dos.lib
  281. RTS                     ; Retour boucle
  282.  
  283. ; *** Ouverture d'une fenetre Dos ***
  284.  
  285. OpenWin:
  286.  
  287. MOVE.L  Dosbase(pc),A6          ; Met adresse dos.lib dans A6
  288. MOVE.L  #Fenetre,D1             ; Met preferences fenet. dans D1
  289. MOVE.L  #Mode_Newfile,D2        ; Fenetre= nouvel objet (1006)
  290. JSR     Open(A6)                ; Routine Dos (-$001E)
  291. RTS
  292.  
  293. ; **** Ecriture dans la fenetre ****
  294. ; **** de la date et de l'heure ****
  295.  
  296. EcritDateHeure:
  297.  
  298. ; ******************************************
  299. ; ***                                    ***
  300. ; *** Regarder si 'Bonjour' ou 'Bonsoir' ***
  301. ; *** c'est à dire s'il est plus ou      ***
  302. ; *** moins que 18 heures                ***
  303. ; ***                                    ***
  304. ; ******************************************
  305.  
  306. MOVE.B  Heures(pc),D0   ; Mettre l'heure dans D0
  307. CMP.B   #18,D0          ; Comparer avec 18
  308. BMI.S   Bonjour         ; Si moins que 18 aller à bonjour
  309. MOVE.L  #Bonsoi,D2      ; Sinon adresse de bonsoi dans D2
  310. BRA.S   Salutations     ; Et brancher à salutations
  311.  
  312. Bonjour:
  313.  
  314. MOVE.L  #Bonjou,D2      ; Adresse de bonjou dans D2
  315.  
  316. Salutations:            ; Affiche Bonjour ou Bonsoir
  317.  
  318. MOVE.L  Dosbase(pc),A6
  319. MOVE.L  WinHandle(pc),D1
  320. MOVE.L  #9,D3                   ; 8 lettres + retour du chariot
  321. JSR     Write(A6)
  322. JSR     Retour_chariot(pc)
  323.                                 ; Affiche "Il est "
  324. ;MOVE.L Dosbase(pc),A6          ; Dosbase est toujours dans A6
  325. MOVE.L  WinHandle(pc),D1
  326. MOVE.L  #Il_est,D2
  327. MOVE.L  #7,D3                   ; 7 caractères
  328. JSR     Write(A6)
  329.                                 ; Affiche l'heure
  330. CLR.L   D1
  331. MOVE.B  Heures(pc),D1
  332. JSR     Convert_Chiffre(pc)
  333. ;MOVE.L Dosbase(pc),A6          ; Dosbase est toujours dans A6
  334. MOVE.L  WinHandle(pc),D1
  335. MOVE.L  #Tamponchiffre,D2
  336. JSR     Write(A6)
  337.                                 ; Ajoute un espace
  338. JSR     Espace(pc)
  339.                                 ; Affiche "Heures et "
  340. ;MOVE.L Dosbase(pc),A6          ; Dosbase est toujours dans A6
  341. MOVE.L  WinHandle(pc),D1
  342. MOVE.L  #Heures_et,D2
  343. MOVE.L  #10,D3
  344. JSR     Write(A6)
  345.                                 ; Affiche les minutes
  346. CLR.L   D1
  347. MOVE.B  Minutes(pc),D1
  348. JSR     Convert_Chiffre(pc)
  349.  
  350. ;MOVE.L Dosbase(pc),A6          ; Dosbase est toujours dans A6
  351. MOVE.L  WinHandle(pc),D1
  352. MOVE.L  #Tamponchiffre,D2
  353. JSR     Write(A6)
  354.                                 ; Affiche "Minutes"
  355. ;MOVE.L Dosbase(pc),A6          ; Dosbase est toujours dans A6
  356. MOVE.L  WinHandle(pc),D1
  357. MOVE.L  #Minutes2,D2
  358. MOVE.L  #9,D3
  359. JSR     Write(A6)
  360. JSR     Retour_Chariot(pc)
  361.  
  362.                                 ; Affiche "Nous sommes le "
  363. ;MOVE.L Dosbase(pc),A6          ; Dosbase est toujours dans A6
  364. MOVE.L  WinHandle(pc),D1
  365. MOVE.L  #nous_sommes_le,D2
  366. MOVE.L  #15,D3
  367. JSR     Write(A6)
  368.                                 ; Affiche le nom du jour
  369. LEA     Longueur_des_jours(pc),A0
  370. MOVE.L  #Nom_des_jours,D2
  371. CLR.L   D1
  372. MOVE.B  Jour_semaine(pc),D1
  373. CMP.B   #0,D1
  374. BEQ.S   Affiche_jour
  375. SUBQ.B  #1,D1
  376.  
  377. Boucle_des_jours:
  378.  
  379. MOVE.B  (A0)+,D4
  380. ADD.L   D4,D2
  381. DBF     D1,Boucle_des_jours
  382.  
  383. Affiche_jour:
  384. ;MOVE.L Dosbase(pc),A6          ; Dosbase est toujours dans A6
  385. MOVE.L  WinHandle(pc),D1
  386. CLR.L   D3
  387. MOVE.B  (A0),D3
  388. JSR     Write(A6)
  389.  
  390. JSR     Espace(pc)
  391.                                 ; Affiche le chiffre du jour
  392. CLR.L   D1
  393. MOVE.B  Jour(pc),D1
  394. CMP.B   #1,D1
  395. BEQ.L   Le_premier
  396. JSR     Convert_Chiffre(pc)
  397.  
  398. Affiche_chiffre_jour:
  399. ;MOVE.L Dosbase(pc),A6          ; Dosbase est toujours dans A6
  400. MOVE.L  WinHandle(pc),D1
  401. MOVE.L  #Tamponchiffre,D2
  402. JSR     Write(A6)
  403.  
  404. JSR     Espace(pc)
  405.                                 ; Affiche le nom du mois
  406. CLR.L   D1
  407. MOVE.B  Mois(pc),D1
  408. SUBQ.B  #1,D1
  409. LEA     Longueur_des_mois(pc),A0
  410. CLR.L   D3
  411. ADD.B   (A0,D1),D3              ; Longueur du mois actuel en caract.
  412. MOVE.L  #Nom_des_mois,D2
  413. CMP.B   #0,D1
  414. BEQ.S   Ecrit_mois
  415. LEA     Longueur_des_mois(pc),A0
  416. SUBQ.B  #1,D1
  417.  
  418. Boucle3:
  419. MOVE.B  (A0)+,D4
  420. ADD.L   D4,D2
  421. DBF     D1,Boucle3
  422.  
  423. Ecrit_mois:
  424. ;MOVE.L Dosbase(pc),A6          ; Dosbase est toujours dans A6
  425. MOVE.L  WinHandle(pc),D1
  426. JSR     Write(A6)
  427. JSR     Espace(pc)
  428.  
  429.                                 ; Affiche l'annee actuelle
  430. CLR.L   D1
  431. MOVE.W  Annee(pc),D1
  432. JSR     Convert_chiffre(pc)
  433. ;MOVE.L Dosbase(pc),A6          ; Dosbase est toujours dans A6
  434. MOVE.L  WinHandle(pc),D1
  435. MOVE.L  #Tamponchiffre,D2
  436. JSR     Write(A6)
  437.  
  438. JSR     Retour_chariot(pc)
  439.  
  440.                                 ; Affiche une parenthèse
  441.  
  442. MOVE.B  #'(',Tamponcaracteres
  443. MOVE.L  #tamponcaracteres,D2
  444. ;MOVE.L Dosbase(pc),A6          ; Dosbase est toujours dans A6
  445. MOVE.L  WinHandle(pc),D1
  446. MOVE.L  #1,D3
  447. JSR     Write(A6)
  448.  
  449.                                 ; Affiche le jour de l'année
  450. CLR.L   D1
  451. MOVE.W  Quantieme(pc),D1
  452. CMP.W   #1,Quantieme            ; Si on est le premier janvier
  453. BEQ.L   Premier_de_lan          ; Alors le buffer sera "1er"
  454. JSR     Convert_Chiffre(pc)     ; Si non on converti le nombre
  455. MOVE.B  #'è',(A0)+              ; ajoute "ème" au TamponChiffre
  456. MOVE.B  #'m',(A0)+              ; pour avoir XXème jour de l'année
  457. MOVE.B  #'e',(A0)+
  458. ADDQ.B  #3,D3
  459.  
  460. Affiche_Jour_de_lan:
  461. ;MOVE.L Dosbase(pc),A6          ; Dosbase est toujours dans A6
  462. MOVE.L  WinHandle(pc),D1
  463. MOVE.L  #TamponChiffre,D2
  464. JSR     Write(A6)
  465.  
  466. JSR     Espace(pc)
  467.  
  468. ;MOVE.L Dosbase(pc),A6          ; Dosbase est toujours dans A6
  469. MOVE.L  WinHandle(pc),D1
  470. MOVE.L  #Jour_de_lannee,D2
  471. MOVE.L  #17,D3
  472. JSR     Write(A6)
  473. JSR     Retour_chariot(pc)
  474.  
  475. RTS
  476.  
  477. ; **** Partie contenant les données pour l'écriture ****
  478. ; **** de la date et de l'heure                     ****
  479.  
  480. Nom_des_mois:
  481. DC.B    'JanvierFévrierMarsAvrilMaiJuinJuilletAoût'
  482. DC.B    'SeptembreOctobreNovembreDécembre'
  483.  
  484. Longueur_des_mois:
  485. DC.B    7,7,4,5,3,4,7,4,9,7,8,8
  486.  
  487. Nom_des_jours:
  488. DC.B    'DimancheLundiMardiMercrediJeudiVendrediSamedi'
  489.  
  490. Longueur_des_jours:
  491. DC.B    8,5,5,8,5,8,6
  492.  
  493. Bonjou:
  494. DC.B    10,'Bonjour',10
  495.  
  496. Bonsoi:
  497. DC.B    10,'Bonsoir',10
  498.  
  499. Il_est:
  500. DC.B    'Il est '
  501.  
  502. Heures_et:
  503. DC.B    'Heures et '
  504.  
  505. Minutes2:
  506. DC.B    ' Minutes',10
  507.  
  508. Nous_sommes_le:
  509. DC.B    "Nous sommes le "
  510.  
  511. Jour_de_lannee:
  512. DC.B    "jour de l'année)",10
  513.  
  514.  
  515.  
  516. ; **** Fin de la partie d'affichage de la Date et de l'Heure ****
  517.  
  518. ; **** Petites sous-routines utiles pour l'affichage à l'écran ***
  519.  
  520. EVEN
  521. Le_premier:
  522. LEA     TamponChiffre(pc),A0
  523. MOVE.L  #'1er',(A0)+
  524. MOVE.L  #4,D3                   ; 4 car un caractere zéro subsiste
  525.                                 ; au début du MOT LONG
  526. BRA.L   Affiche_Chiffre_jour
  527.  
  528. Premier_de_lan:
  529. LEA     TamponChiffre(pc),A0
  530. MOVE.L  #'1er',(A0)+
  531. MOVE.L  #4,D3                   ; 4 car un caractere zéro subsiste
  532.                                 ; au début du MOT LONG
  533. BRA.L   Affiche_jour_de_lan
  534.  
  535.  
  536. Retour_chariot:
  537. MOVE.B  #$A,Tamponcaracteres
  538. MOVE.L  #tamponcaracteres,D2
  539. MOVE.L  WinHandle(pc),D1
  540. MOVE.L  #1,D3
  541. MOVE.L  Dosbase(pc),A6          ; On laisse l'instruction car on
  542.                                 ; ignore si Dosbase est dans A6
  543.                                 ; lors de son appel
  544. JSR     Write(A6)
  545. RTS
  546.  
  547. Espace:
  548. MOVE.B  #$20,Tamponcaracteres
  549. MOVE.L  #tamponcaracteres,D2
  550. MOVE.L  WinHandle(pc),D1
  551. MOVE.L  #1,D3
  552. MOVE.L  Dosbase(pc),A6          ; Idem (voir plus haut)
  553. JSR     Write(A6)
  554. RTS
  555.  
  556. TamponCaracteres:
  557. DC.L    0
  558.  
  559. ; **** Fin des sous-routines d'affichage ****
  560.  
  561. ; **** Affichage de "Fete(s) d'aujourd'hui:" ****
  562.  
  563. Ecrit_aujourd:
  564. MOVE.L  Dosbase(pc),A6
  565. MOVE.L  WinHandle(pc),D1
  566. MOVE.L  #Fete_aujourd,D2
  567. MOVE.L  #23,D3
  568. JSR     Write(A6)
  569. RTS
  570.  
  571. Fete_aujourd:
  572. DC.B    "Fête(s) d'aujourd'hui:",10
  573.  
  574. ; **** Affichage de "Demain:" ****
  575.  
  576. EVEN
  577. Ecrit_demain:
  578. MOVE.L  Dosbase(pc),A6
  579. MOVE.L  WinHandle(pc),D1
  580. MOVE.L  #Fete_demain,D2
  581. MOVE.L  #8,D3
  582. JSR     Write(A6)
  583. RTS
  584.  
  585. Fete_demain:
  586. DC.B    'Demain:',10
  587.  
  588.  
  589. ; **********************************************************
  590. ; ****                                                  ****
  591. ; **** Routine de conversion d'un nombre Hexadécimal    ****
  592. ; **** En décimal "affichable" à l'écran (ASCII)        ****
  593. ; **** Le chiffre en Hexa (<9999) doit etre dans D1     ****
  594. ; **** En retour on aura le résultat dans TamponChiffre ****
  595. ; **** Et la longeur en caractères dans D3              ****
  596. ; ****                                                  ****
  597. ; **********************************************************
  598.  
  599. Convert_Chiffre:
  600.  
  601. BCLR    #0,Flag
  602. LEA     TamponChiffre(pc),A0
  603. CLR.L   D3
  604.  
  605. CMP.W   #999,D1
  606. BLS.S   Moins_de_mille
  607.  
  608. BSET    #0,Flag
  609. DIVU    #1000,D1
  610. ADD.B   #$30,D1
  611. MOVE.B  D1,(A0)+
  612. ADD.B   #1,D3
  613. MOVE.W  #0,D1
  614. SWAP    D1
  615.  
  616. Moins_de_mille:
  617.  
  618. CMP.W   #99,D1
  619. BLS.S   Moins_de_cent
  620.  
  621. BSET    #0,Flag
  622. DIVU    #100,D1
  623. ADD.B   #$30,D1
  624. MOVE.B  D1,(A0)+
  625. ADD.B   #1,D3
  626. MOVE.W  #0,D1
  627. SWAP    D1
  628. BRA.S   Moins_de_cent2
  629.  
  630. Moins_de_cent:
  631.  
  632. BTST    #0,Flag
  633. BEQ.S   Moins_de_cent2
  634. MOVE.B  #$30,(A0)+
  635. ADD.B   #1,D3
  636.  
  637. Moins_de_cent2:
  638.  
  639. CMP.B   #9,D1
  640. BLS.S   Moins_de_dix
  641.  
  642. DIVU    #10,D1
  643. ADD.W   #$30,D1
  644. MOVE.B  D1,(A0)+
  645. SWAP    D1
  646. ADD.W   #$30,D1
  647. MOVE.B  D1,(A0)+
  648. ADD.B   #2,D3
  649. RTS
  650.  
  651. Moins_de_dix:
  652.  
  653. BTST    #0,Flag
  654. BEQ.S   Moins_de_dix2
  655. MOVE.B  #$30,(A0)+
  656. ADD.B   #1,D3
  657.  
  658. Moins_de_dix2:
  659.  
  660. ADD.W   #$30,D1
  661. MOVE.B  D1,(A0)+
  662. ADD.B   #1,D3
  663. RTS
  664.  
  665. Flag:
  666. DC.B    0
  667.  
  668. EVEN
  669. TamponChiffre:
  670. DC.L    0,0
  671.  
  672.  
  673. ; **********************************************************
  674. ; ****                                                  ****
  675. ; ****  Fin de la routine de conversion Hexa -> Déci    ****
  676. ; ****                                                  ****
  677. ; **********************************************************
  678.  
  679.  
  680. Affichefete:
  681.  
  682. LEA     Fete(pc),A0     ; Charge l'adresse de fete dans A0
  683. MOVE.B  Jour(pc),D0     ; Numéro du jour dans D0
  684. MOVE.B  Mois(pc),D1     ; Numéro du mois dans D1
  685. CLR.L   D3
  686.  
  687. Boucle1:
  688.  
  689. MOVE.B  (A0)+,D3        ; Transfert contenu de A0 dans D3
  690. CMP.B   #$FF,D3         ; D3 = $FF?
  691. BEQ.S   Sort_fete
  692. CMP.B   #31,D3          ; Si D3>31 il s'agit de texte donc on continue
  693. BGT.S   Boucle1
  694. CMP.B   D0,D3           ; Comparer le jour
  695. BNE.S   Boucle1         ; Si différent passer à l'octet suivant
  696. MOVE.B  (A0)+,D3        ; Transfert contenu de A0 dans D3
  697. CMP.B   D1,D3           ; Comparer le mois
  698. BNE.S   Boucle1         ; Si différent recommencer
  699.  
  700. ; routine d'affichage
  701.  
  702. pmgs:
  703. MOVE.L  A0,Buffer       ; On se rappelle de l'adresse
  704. MOVE.L  A0,D2           ; Adresse de début de texte
  705. CLR.L   D3              ; Mettre D3 à 0
  706.  
  707. ploop:
  708. CMP.B   #31,(A0)+       ; Si <= à 31 alors c'est la marque d'une date
  709. BLS.S   pmgs2           ; Donc on va écrire le message courant
  710. ADDQ.L  #1,D3           ; Sinon ajouter 1 caractère au compteur D3
  711. CMP.B   #$FF,(A0)       ; Fin de la liste? (utile seulement pour 31 Déc)
  712. BEQ     pmgs2           ; Si oui écrire message courant
  713. BRA.S   ploop           ; Sinon on continue la lecture
  714.  
  715. pmgs2:
  716. MOVE.L  dosbase(pc),A6
  717. MOVE.L  Winhandle(pc),D1
  718. JSR     Write(A6)
  719. JSR     Retour_chariot(pc)
  720.  
  721. MOVE.B  Jour(pc),D0     ; On reprend la valeur du jour
  722. MOVE.B  Mois(pc),D1     ; On reprend la valeur du mois
  723. MOVE.L  Buffer(pc),A0   ; On recommence là où on avait arrete
  724. BRA.S   Boucle1
  725.  
  726. Sort_fete:
  727. RTS
  728.  
  729. ; **********************************************************
  730. ; ****                                                  ****
  731. ; **** Cette routine calcule le numéro du jour et du    ****
  732. ; **** mois qui suit. Ex: 2 Juillet => 3 Juillet        ****
  733. ; **** 28 Février => 1er Mars ou 29 Février etc, etc... ****
  734. ; ****                                                  ****
  735. ; **********************************************************
  736.  
  737. Jour_suivant:
  738.  
  739. MOVE.B  Jour(pc),D0
  740. MOVE.B  Mois(pc),D1
  741. SUBQ.B  #1,D1
  742. MULU    #2,D1
  743. LEA     Jours_du_mois(pc),A0
  744. MOVE.W  (A0,D1),D2
  745. CMP.B   D2,D0           ; Est-on le dernier jour du mois?
  746. BNE.S   OK_jour         ; Si non, simplement ajouter 1 au jour
  747. MOVE.B  #1,jour         ; Si oui, mettre 1 dans jour
  748. CMP.B   #12,Mois        ; Est-on en Décembre?
  749. BEQ.S   Janvier         ; Si oui, le mois prochain est Janvier
  750. ADDQ.B  #1,Mois         ; Si non, ajouter 1 au mois
  751. RTS
  752.  
  753. Janvier:
  754. MOVE.B  #1,Mois         ; Mettre 1 dans Mois
  755. RTS
  756.  
  757. OK_jour:
  758. ADDQ.B  #1,Jour         ; Mettre 1 dans Jour
  759. RTS
  760.  
  761. ; **** Routine d'attente de quatre secondes     ****
  762. ; **** Elle est utile sous SEKA mais doit etre  ****
  763. ; **** otée de la version CLI (l'affichage      ****
  764. ; **** restera ecrit dans la fenetre CLI        ****
  765.  
  766. Pause:
  767.  
  768. MOVE.L  Dosbase(pc),A6
  769. MOVE.L  #200,D1
  770. JSR     Delay(A6)
  771. RTS
  772.  
  773. ERREUR:
  774. illegal         ; Remplacer ILLEGAL par RTS avant de compiler
  775.                 ; pour un exécutable sous CLI sinon il y
  776.                 ; aura une erreur logicielle...
  777.  
  778. ; *** Fermeture fenetre Dos ***
  779.  
  780. CloseWin:
  781.  
  782. MOVE.L  WinHandle(pc),D1        ; Met adresse fenetre dans D1
  783. MOVE.L  Dosbase(pc),A6          ; Met adresse Dos.lib dans A6
  784. JSR     Close(A6)               ; Routine Dos, ferme fenetre
  785.  
  786. ; *** Fermeture de la Dos.Library ***
  787.  
  788. CloseDos:
  789.  
  790. MOVE.L  Execbase,A6             ; Met adresse Execbase dans A6
  791. MOVE.L  Dosbase(pc),A1          ; Met adresse dosbase dans A1
  792. JSR     CloseLibrary(A6)        ; Routine interne, ferme dos.lib
  793.  
  794. ; **** Fermeture de Intuition.Library ****
  795.  
  796. CLOSEINTLIB:
  797.  
  798. MOVE.L  Execbase,A6
  799. MOVE.L  IntBase(pc),A1
  800. JSR     Closelibrary(A6)
  801.  
  802. Fin_du_programme:
  803. illegal         ; Remplacer ILLEGAL par RTS avant de compiler
  804.                 ; pour un exécutable sous CLI sinon il y
  805.                 ; aura une erreur logicielle...
  806.  
  807. ; ***** Partie des données *****
  808.  
  809. ; *** On place d'abord les MOTS LONGS et les MOTS pour ***
  810. ; *** ne pas se retrouver avec des adresses paires     ***
  811.  
  812. Buffer:
  813. DC.L    0
  814.  
  815. WinHandle:
  816. DC.L            0
  817.  
  818. Intbase:
  819. DC.L    0
  820.  
  821. Dosbase:
  822. DC.L    0
  823.  
  824. Sys_sec:
  825.  
  826. DC.L    0
  827.  
  828. Sys_microSec:
  829.  
  830. DC.L    0
  831.  
  832. SecAn:
  833.  
  834. DC.L    0
  835.  
  836. Jours_du_mois:
  837. DC.W    31,28,31,30,31,30,31,31,30,31,30,31
  838.  
  839. Annee:
  840. DC.W    0
  841.  
  842. Quantieme:
  843. DC.W    0
  844.  
  845. Jour_Semaine:
  846. DC.B    0
  847.  
  848. Fenetre:
  849. DC.B    'CON:10/10/600/180/Fenetre',0
  850.  
  851. ; coords coin haut-gauche, largeur, hauteur, titre
  852. ; Remplacer par  DC.B '*',0  pour obtenir l'affichage
  853. ; dans la fenetre CLI
  854.  
  855. IntName:
  856. DC.B    "intuition.library",0
  857.  
  858. DosName:
  859. DC.B    "dos.library",0
  860.  
  861. Mois:
  862. DC.B    0
  863.  
  864. Jour:
  865. DC.B    0
  866.  
  867. Heures:
  868. DC.B    0
  869.  
  870. Minutes:
  871. DC.B    0
  872.  
  873. Secondes:
  874. DC.B    0
  875.  
  876. ; **********************************************************
  877. ; ****                                                  ****
  878. ; **** Cette partie contient les données de tous les    ****
  879. ; **** jours de l'année sous forme de JJ,MM,'Message'   ****
  880. ; **** L'ordre importe peu mais par commodité j'ai      ****
  881. ; **** préféré avoir recours à un tri alphabétique      ****
  882. ; **** On peut rajouter autant de messages que l'on     ****
  883. ; **** veut si l'on respecte le format JJ,MM,'Message'  ****
  884. ; ****                                                  ****
  885. ; **** Ex: 03,10,'Anniversaire de Patricia!'            ****
  886. ; ****     30,12,'Envoyer une carte de voeux à Céline'  ****
  887. ; ****                                                  ****
  888. ; **** Tout est possible pourvu que les messages soient ****
  889. ; **** assez brefs                                      ****
  890. ; **** Ne pas enlever le DC.B   $FF qui se trouve à la  ****
  891. ; **** fin car il s'agit d'un repère utilisé par la     ****
  892. ; **** routine affichefete (sinon catastrophe probable) ****
  893. ; ****                                                  ****
  894. ; **********************************************************
  895.  
  896. Fete:
  897.  
  898. ; Format des données: Jour,mois,'Prénom/Message'
  899. ; Pour les longs textes aller à la ligne et
  900. ; remettre DC.B JJ,MM,'...suite du message...'
  901. ; (voir par exemple le 05,10)
  902.  
  903. DC.B    01,01,"Jour de l'An, Bonne année!!!"
  904. DC.B    01,02,'Ella'
  905. DC.B    01,03,'Albin, Aubin'
  906. DC.B    01,04,'Hugues'
  907. DC.B    01,05,'Fête du travail'
  908. DC.B    01,06,'Justin, Pamela'
  909. DC.B    01,07,'Aaron, Esther, Thierry'
  910. DC.B    01,08,'Alphonse, Alphonsine'
  911. DC.B    01,09,'Gilles, Josué, Ruth'
  912. DC.B    01,10,"Thérèse de l'E.J., Ariel(le)"
  913. DC.B    01,11,'Toussaint, Adam, Daphné, Hector'
  914. DC.B    01,11,'Horace, Mathurin(e), Pénélope'
  915. DC.B    01,12,'Florence, Éloi'
  916. ; les 01 sonts complets
  917.  
  918. DC.B    02,01,'Basile, Jésus'
  919. DC.B    02,02,'Présentation'
  920. DC.B    02,03,'Charles le B.'
  921. DC.B    02,04,'Sandrine'
  922. DC.B    02,05,'Athanase, Boris, Zoé'
  923. DC.B    02,06,'Blandine, Vital'
  924. DC.B    02,07,'Martinien'
  925. DC.B    02,08,'Eusèbe, Julien'
  926. DC.B    02,09,'Ingrid'
  927. DC.B    02,10,'Léger'
  928. DC.B    02,11,'Défunts'
  929. DC.B    02,12,'Viviane'
  930. ; les 02 sont complets
  931.  
  932. DC.B    03,01,'Geneviève'
  933. DC.B    03,02,'Anatole, Blaise, Oscar'
  934. DC.B    03,03,'Guénolé'
  935. DC.B    03,04,'Richard'
  936. DC.B    03,05,'Philippe, Philippine'
  937. DC.B    03,06,'Kévin'
  938. DC.B    03,07,'Thomas'
  939. DC.B    03,08,'Lydie'
  940. DC.B    03,09,'Grégoire'
  941. DC.B    03,10,'Candide, Gérard(ine)'
  942. DC.B    03,11,'Hubert(e)'
  943. DC.B    03,12,'Xavier(ère)'
  944. ; les 03 sont complets
  945.  
  946. DC.B    04,01,'Odilon'
  947. DC.B    04,02,'Bérénice, Véronique'
  948. DC.B    04,03,'Casimir, Humbert'
  949. DC.B    04,04,'Alette, Isidore'
  950. DC.B    04,05,'Sylvain(e), Sylvette, Sylviane'
  951. DC.B    04,06,'Clotilde'
  952. DC.B    04,07,'Bertha, Berthe, Florent, Florian, Éliane'
  953. DC.B    04,08,'J.M. Vianney'
  954. DC.B    04,09,'Iris, Moïse, Rosalie'
  955. DC.B    04,10,"France, Francine, Francis(que), François d'Ass., Franck"
  956. DC.B    04,11,'Carole, Caroline, Charles'
  957. DC.B    04,12,'Barbara, Barbe, Barberine'
  958. ; les 04 sont complets
  959.  
  960. DC.B    05,01,'Édouard'
  961. DC.B    05,02,'Agathe'
  962. DC.B    05,03,'Olive'
  963. DC.B    05,04,'Irène'
  964. DC.B    05,05,'Ange, Angélique, Judith'
  965. DC.B    05,06,'Boniface, Igor, Ophélie'
  966. DC.B    05,07,'Anthony, Antoine(tte), Antonin'
  967. DC.B    05,08,'Abel, Oswald'
  968. DC.B    05,09,'Raïssa'
  969. DC.B    05,10,'Capucine, Fleur, Marjolaine, Myrtille, Pervenche'
  970. DC.B    05,10,'Placide, Prune, Violette'
  971. DC.B    05,11,'Sylvie, Zacharie'
  972. DC.B    05,12,'Gérald(ine)'
  973. ; les 05 sont complets
  974.  
  975. DC.B    06,01,'Mélaine, Balthazar, Tiphaine'
  976. DC.B    06,02,'Dora, Doris, Dorothée, Gaston'
  977. DC.B    06,03,'Colette'
  978. DC.B    06,04,'Marcellin(e)'
  979. DC.B    06,05,'Prudence'
  980. DC.B    06,06,'Norbert'
  981. DC.B    06,07,'Mariette'
  982. DC.B    06,08,'Transfiguration'
  983. DC.B    06,09,'Bertrand(e), Eve, Évangéline, Évelyne'
  984. DC.B    06,10,'Bruno'
  985. DC.B    06,11,'Bertille, Léonard'
  986. DC.B    06,12,'Colas, Colin, Nicolas, Nicole'
  987. ; les 06 sont complets
  988.  
  989. DC.B    07,01,'Cédric, Raymond(e), Virginie'
  990. DC.B    07,02,'Eugène, Eugénie'
  991. DC.B    07,03,'Félicie, Félicité'
  992. DC.B    07,04,'J-B de la S.'
  993. DC.B    07,05,'Gisel(l)e'
  994. DC.B    07,06,'Gilbert(e)'
  995. DC.B    07,07,'Ralph, Raoul'
  996. DC.B    07,08,'Gaetan(e)'
  997. DC.B    07,09,'Gina, Reine, Régine'
  998. DC.B    07,10,'Gustave, Serge, Sergine'
  999. DC.B    07,11,'Carine, Ernest(ine), Karine'
  1000. DC.B    07,12,'Ambre, Ambroise'
  1001. ; Les 07 sont complets
  1002.  
  1003. DC.B    08,01,'Gudule, Lucien(ne)'
  1004. DC.B    08,02,'Jacqueline'
  1005. DC.B    08,03,'Jean de D.'
  1006. DC.B    08,04,'Julie, Walter'
  1007. DC.B    08,05,'Victoire 1945, Désiré(e)'
  1008. DC.B    08,06,'Médard'
  1009. DC.B    08,07,'Edgar(d), Thibault'
  1010. DC.B    08,08,'Dominique'
  1011. DC.B    08,09,'Nativité N.D., Adrien(ne)'
  1012. DC.B    08,10,'Morgan(e), Pélagie, Sibylle'
  1013. DC.B    08,11,'Geoffroy, Godefroy'
  1014. DC.B    08,12,'Immaculée Conception'
  1015. ; les 08 sont complets
  1016.  
  1017. DC.B    09,01,'Alix'
  1018. DC.B    09,02,'Apolline, Apollon'
  1019. DC.B    09,03,'Françoise'
  1020. DC.B    09,04,'Gautier'
  1021. DC.B    09,05,'Pacôme'
  1022. DC.B    09,06,'Diane, Ephrem'
  1023. DC.B    09,07,'Amandine, Hermin(i)e, Irma, Marianne'
  1024. DC.B    09,08,'Amour'
  1025. DC.B    09,09,'Alain'
  1026. DC.B    09,10,'Denis, Sally, Sarah'
  1027. DC.B    09,11,'Théodora, Théodore'
  1028. DC.B    09,12,'P. Fourier'
  1029. ; les 09 sont complets
  1030.  
  1031. DC.B    10,01,'Guillaume(tte), William'
  1032. DC.B    10,02,'Arnaud, Arnold, Arnould'
  1033. DC.B    10,03,'Anastase, Anastasie, Vivien'
  1034. DC.B    10,04,'Fulbert'
  1035. DC.B    10,05,'Solange'
  1036. DC.B    10,06,'Landry'
  1037. DC.B    10,07,'Ulla, Ulrich'
  1038. DC.B    10,08,'Laure, Laurence, Laurent'
  1039. DC.B    10,09,'Inès'
  1040. DC.B    10,10,'Ghislain(e), Virgile'
  1041. DC.B    10,11,'Lionel, Léon(e), Léonie, Léontine, Noé'
  1042. DC.B    10,12,'Romaric'
  1043. ; les 10 sont complets
  1044.  
  1045. DC.B    11,01,'Paulin(e), Hortense'
  1046. DC.B    11,02,'N-D de Lourdes'
  1047. DC.B    11,03,'Rosine'
  1048. DC.B    11,04,'Stanislas'
  1049. DC.B    11,05,'Estelle, May, Stella, Étoile'
  1050. DC.B    11,06,'Barnabé'
  1051. DC.B    11,07,'Benoit(e), Olga'
  1052. DC.B    11,08,'Claire(tte), Suzanne, Suzette, Suzon'
  1053. DC.B    11,09,'Adelphe'
  1054. DC.B    11,10,'Firmin'
  1055. DC.B    11,11,'Armistice 14-18'
  1056. DC.B    11,12,'Daniel(le)'
  1057. ; les 11 sont complets
  1058.  
  1059. DC.B    12,01,'César(ine), Tania, Tatiana'
  1060. DC.B    12,02,'Félicien(ne), Félix'
  1061. DC.B    12,03,'Justine, Maximilien(ne)'
  1062. DC.B    12,04,'Jules'
  1063. DC.B    12,05,'Achille'
  1064. DC.B    12,06,'Guy'
  1065. DC.B    12,07,'Oliva, Olivia, Olivier'
  1066. DC.B    12,08,'Clarisse'
  1067. DC.B    12,09,'Apollinaire'
  1068. DC.B    12,10,'Séraphin(e), Wilfried'
  1069. DC.B    12,11,'Christian(e), Tristan'
  1070. DC.B    12,12,'Jeanne F., Chantal, Corentin(e)'
  1071. ; les 12 sont complets
  1072.  
  1073. DC.B    13,01,'Hilaire, Yvette'
  1074. DC.B    13,02,'Béatrice, Jordan'
  1075. DC.B    13,03,'Rodrigue'
  1076. DC.B    13,04,'Ida'
  1077. DC.B    13,05,'Rolande'
  1078. DC.B    13,06,'Antoine de P.'
  1079. DC.B    13,07,'Henri(ette), Joël(le)'
  1080. DC.B    13,08,'Hippolyte, Philomène'
  1081. DC.B    13,09,'Aimé'
  1082. DC.B    13,10,'Géraud'
  1083. DC.B    13,11,'Brice, Diego'
  1084. DC.B    13,12,'Josselin(e), Luce, Lucie'
  1085. ; les 13 sont complets
  1086.  
  1087. DC.B    14,01,'Nina'
  1088. DC.B    14,02,'Adolphe, Valentin(e)'
  1089. DC.B    14,03,'Mahaut, Mathilde'
  1090. DC.B    14,04,'Max, Maxime, Maximin'
  1091. DC.B    14,05,'Aglaé, Mathias'
  1092. DC.B    14,06,'Élisée, Valère, Vassili'
  1093. DC.B    14,07,'Fête Nationale, Camille'
  1094. DC.B    14,08,'Evrard'
  1095. DC.B    14,09,'La Sainte Croix'
  1096. DC.B    14,10,'Calixte, Calliste, Juste'
  1097. DC.B    14,11,'Sidoine, Sidonie'
  1098. DC.B    14,12,'Odile'
  1099. ; les 14 sont complets
  1100.  
  1101. DC.B    15,01,'Amalric, Amaury, Rachel, Rémi'
  1102. DC.B    15,02,'Claude(tte), Claudie, Claudine, Faust(a), Faustin(e)'
  1103. DC.B    15,03,'Louise'
  1104. DC.B    15,04,'Paterne'
  1105. DC.B    15,05,'Denise'
  1106. DC.B    15,06,'Germaine'
  1107. DC.B    15,07,'Bonaventure, Donald, Wladimir'
  1108. DC.B    15,08,'Assomption, Alfred, Aufray, Maria, Marie, Marielle, Marion'
  1109. DC.B    15,08,'Maryline, Mireille, Muriel(le), Myriam, Napoléon'
  1110. DC.B    15,09,'Dolorès, Roland'
  1111. DC.B    15,10,'Tessie, Thérèse'
  1112. DC.B    15,11,'Albert(e), Albertine, Arthur, Aubert, Léopold(ine)'
  1113. DC.B    15,12,'Ninon'
  1114. ; les  15 sont complets
  1115.  
  1116. DC.B    16,01,'Marcel'
  1117. DC.B    16,02,'Julienne'
  1118. DC.B    16,03,'Bénédicte'
  1119. DC.B    16,04,'Benoît-J.'
  1120. DC.B    16,05,'Honorat, Honoré'
  1121. DC.B    16,06,'Aurore, Aurèle, Aurélie, Aurélien(ne), Réginald, Régis, Réjane'
  1122. DC.B    16,07,'Carmen, Elvire'
  1123. DC.B    16,08,'Armel(le), Roch'
  1124. DC.B    16,09,'Abondance, Corneille, Cornélie, Cyprien(ne), Édith'
  1125. DC.B    16,10,'Edwige'
  1126. DC.B    16,11,'Daisy, Gertrude, Magali, Maggy'
  1127. DC.B    16,11,'Margaret, Marguerite, Peggy, Rita'
  1128. DC.B    16,12,'Adelaïde, Alice, Alicia, Aliette, Alizon'
  1129. ; les 16 sont complets
  1130.  
  1131. DC.B    17,01,'Roseline, Yolande'
  1132. DC.B    17,02,'Alexis, Chloé'
  1133. DC.B    17,03,'Patrice, Patricia, Patrick'
  1134. DC.B    17,04,'Anicet'
  1135. DC.B    17,05,'Paquerette, Pascal(e), Pascaline'
  1136. DC.B    17,06,'Hervé, Isaure, Rainier'
  1137. DC.B    17,07,'Arlette, Charllotte'
  1138. DC.B    17,08,'Hyacinte, Jacinthe'
  1139. DC.B    17,09,'Renaud, Ronald'
  1140. DC.B    17,10,'Baudoin(e)'
  1141. DC.B    17,11,'Babette, Belinda, Bettina, Betty, Elsa'
  1142. DC.B    17,11,'Liliane, Linda, Lise, Élisabeth, Élise'
  1143. DC.B    17,12,'Gaël(le), Judicaël(le), Olympe'
  1144. ; les 17 sont complets
  1145.  
  1146. DC.B    18,01,'Prisca'
  1147. DC.B    18,02,'Bernadette'
  1148. DC.B    18,03,'Cyril(le)'
  1149. DC.B    18,04,'Parfait'
  1150. DC.B    18,05,'Cora, Coralie, Corinne, Erik(a), Éric(a)'
  1151. DC.B    18,06,'Léonce'
  1152. DC.B    18,07,'Frédéric, Frédérique'
  1153. DC.B    18,08,'Hélène, Laetitia, Nora, Éléonore'
  1154. DC.B    18,09,'Ariane, Nada, Nadia, Nadine, Nadège, Véra'
  1155. DC.B    18,10,'Gwenael(le), Gwenn, Luc, Lucas, Lucile'
  1156. DC.B    18,11,'Aude'
  1157. DC.B    18,12,'Gatien'
  1158. ; les 18 sont complets
  1159.  
  1160. DC.B    19,01,'Marius'
  1161. DC.B    19,02,'Gabin'
  1162. DC.B    19,03,'Joseph(ine), Josette, Josiane, José'
  1163. DC.B    19,04,'Emma'
  1164. DC.B    19,05,'Erwan, Eudes, Yves, Yvon(ne)'
  1165. DC.B    19,06,'Dieudonné, Gervais(e), Romuald'
  1166. DC.B    19,07,'Arsène'
  1167. DC.B    19,08,'Jean Eudes'
  1168. DC.B    19,09,'Amélie, Émilie'
  1169. DC.B    19,10,'René(e)'
  1170. DC.B    19,11,'Tanguy'
  1171. DC.B    19,12,'Urbain'
  1172. ; les 19 sont complets
  1173.  
  1174. DC.B    20,01,'Bastien(ne), Fabien(ne), Sébastien(ne)'
  1175. DC.B    20,02,'Aimée, Fabiola'
  1176. DC.B    20,03,'PRINTEMPS, Herbert'
  1177. DC.B    20,04,'Odette'
  1178. DC.B    20,05,'Bernardin'
  1179. DC.B    20,06,'Silvère'
  1180. DC.B    20,07,'Marina, Marin(e), Élie'
  1181. DC.B    20,08,'Bernard, Samantha, Samuel'
  1182. DC.B    20,09,'Davy, Eustache'
  1183. DC.B    20,10,'Adeline'
  1184. DC.B    20,11,'Edmond(e), Edmé(e), Octave, Octavie'
  1185. DC.B    20,12,'Abraham, Isaac, Théophile, Zéphirin(e)'
  1186. ; les 20 sont complets
  1187.  
  1188. DC.B    21,01,'Agnès'
  1189. DC.B    21,02,'P. Damien'
  1190. DC.B    21,03,'Clémence'
  1191. DC.B    21,03,'Joyeux anniversaire Christian (mon créateur adoré!!)'
  1192. DC.B    21,04,'Anselme'
  1193. DC.B    21,05,'Constant(in)'
  1194. DC.B    21,06,'ÉTÉ, Gonzague, Rodolphe'
  1195. DC.B    21,07,'Victoire, Victor(ia)'
  1196. DC.B    21,08,'Christophe, Gratien(ne), Grâce'
  1197. DC.B    21,09,'Deborah, Mathieu'
  1198. DC.B    21,10,'Céline, Ursule'
  1199. DC.B    21,11,'Prés. Marie'
  1200. DC.B    21,12,'HIVER'
  1201. ; Les 21 sont complets
  1202.  
  1203. DC.B    22,01,'Vincent'
  1204. DC.B    22,02,'Isabeau, Isabelle'
  1205. DC.B    22,03,'Léa'
  1206. DC.B    22,04,'Alexandra, Alexandre, Axel(le), Sacha, Sandra'
  1207. DC.B    22,05,'Émile'
  1208. DC.B    22,06,'Alban(e), Albe'
  1209. DC.B    22,07,'Madeleine, Maud'
  1210. DC.B    22,08,'Fabrice, Symphorien'
  1211. DC.B    22,09,'Maurice(tte)'
  1212. DC.B    22,10,'Salomé, Élodie'
  1213. DC.B    22,11,'Cécile, Sheila'
  1214. DC.B    22,12,'Françoise-Xavière'
  1215. ; les 22 sont complets
  1216.  
  1217. DC.B    23,01,'Barnard, Mélanie'
  1218. DC.B    23,02,'Lazare'
  1219. DC.B    23,03,'Rebecca, Victorien(ne)'
  1220. DC.B    23,04,'Fortunat, Georges, Georgette'
  1221. DC.B    23,05,'Didier'
  1222. DC.B    23,06,'Audrey'
  1223. DC.B    23,07,'Brigitte'
  1224. DC.B    23,08,'Rosa, Rose, Rosemonde, Rosette'
  1225. DC.B    23,09,'AUTOMNE, Constance'
  1226. DC.B    23,10,'Jean de C.'
  1227. DC.B    23,11,'Clément(ine), Rachilde'
  1228. DC.B    23,12,'Armand(e)'
  1229. ; les 23 sont complets
  1230.  
  1231. DC.B    24,01,'Fr de Sales, Fanchon, Fanny, Timothée'
  1232. DC.B    24,02,'Modeste'
  1233. DC.B    24,03,'Catherine de Su., Kate'
  1234. DC.B    24,04,'Fidèle'
  1235. DC.B    24,05,'Donatien(ne)'
  1236. DC.B    24,06,'Baptiste, Baptistine, Ivan, Jean-Baptiste, Jeannine, Yann, Yannick'
  1237. DC.B    24,07,'Christelle, Christine'
  1238. DC.B    24,08,'Barthélémy'
  1239. DC.B    24,09,'Thècle'
  1240. DC.B    24,10,'Florentin'
  1241. DC.B    24,11,'Flora'
  1242. DC.B    24,12,'Adèle'
  1243. ; les 24 sont complets
  1244.  
  1245. DC.B    25,01,'Conv. S.Paul'
  1246. DC.B    25,02,'Roméo'
  1247. DC.B    25,03,'Annonciation, Violaine'
  1248. DC.B    25,04,'Marc, Marceau'
  1249. DC.B    25,05,'Sonia, Sophie'
  1250. DC.B    25,06,'Prosper, Salomon'
  1251. DC.B    25,07,'Jacob, Jacques'
  1252. DC.B    25,08,'Clovis, Héloïse, Louis, Loïc, Ludovic'
  1253. DC.B    25,09,'Hermann'
  1254. DC.B    25,10,'Crépin, Enguerran'
  1255. DC.B    25,11,'Catherine L.'
  1256. DC.B    25,12,'Joyeux Noël!!!'
  1257. DC.B    25,12,'Emmanuel(le), Manuel(le)'
  1258. ; les 25 sont complets
  1259.  
  1260. DC.B    26,01,'Paule'
  1261. DC.B    26,02,'Nestor'
  1262. DC.B    26,03,'Lara, Larissa'
  1263. DC.B    26,04,'Alida'
  1264. DC.B    26,05,'Béranger(e)'
  1265. DC.B    26,06,'Anthelme'
  1266. DC.B    26,07,'Anaïs, Anita, Anna, Anne, Annette, Annie'
  1267. DC.B    26,07,'Anouchka, Anouck, Joachim, Nanette'
  1268. DC.B    26,08,'Natacha'
  1269. DC.B    26,09,'Côme, Damien'
  1270. DC.B    26,10,'Dimitri, Evariste'
  1271. DC.B    26,11,'Delphin(e)'
  1272. DC.B    26,12,'Steve, Stéphane, Stéphanie, Étienne(tte)'
  1273. ; les 26 sont complets
  1274.  
  1275. DC.B    27,01,'Angèle'
  1276. DC.B    27,02,'Honorine, Léandre'
  1277. DC.B    27,03,'Habib'
  1278. DC.B    27,04,'Zita'
  1279. DC.B    27,05,'Augustin'
  1280. DC.B    27,06,'Fernand(e), Ladislas'
  1281. DC.B    27,07,'Céleste, Célestine, Nathalie, Noël(le)'
  1282. DC.B    27,08,'Monique'
  1283. DC.B    27,09,'Vincent de Paul'
  1284. DC.B    27,10,'Émeline'
  1285. DC.B    27,11,'Astrid, Séverin(e)'
  1286. DC.B    27,12,'Jean'
  1287. ; les 27 sont complets
  1288.  
  1289. DC.B    28,01,"Thérèse d'Aquin"
  1290. DC.B    28,02,'Romain(e)'
  1291. DC.B    28,03,'Gontran'
  1292. DC.B    28,04,'Valérie(n)'
  1293. DC.B    28,05,'Germain'
  1294. DC.B    28,06,'Irénée'
  1295. DC.B    28,07,'Samson'
  1296. DC.B    28,08,'Augustin(e)'
  1297. DC.B    28,09,'Venceslas, Wenceslas'
  1298. DC.B    28,10,'Simon, Siméon'
  1299. DC.B    28,11,'Jacques d.l.M.'
  1300. DC.B    28,12,'Innocents, Gaspard'
  1301. ; les 28 sont complets
  1302.  
  1303. DC.B    29,01,'Gildas'
  1304. DC.B    29,02,'Augusta, Auguste'
  1305. DC.B    29,03,'Gladys, Gwladys, Jonas'
  1306. DC.B    29,04,'Catherine de Si., Huguette'
  1307. DC.B    29,05,'Aymar, Aymon(e)'
  1308. DC.B    29,06,'Paul, Perrine, Pierre(tte), Pétronille'
  1309. DC.B    29,07,'Marthe, Olaf'
  1310. DC.B    29,08,'Sabin(e)'
  1311. DC.B    29,09,'Gabriel(le), Michel(le), Micheline, Michée, Raphaël(le)'
  1312. DC.B    29,10,'Narcisse'
  1313. DC.B    29,11,'Saturnin'
  1314. DC.B    29,12,'David'
  1315. ; les 29 sont complets
  1316.  
  1317. DC.B    30,01,'Martin(e)'
  1318. DC.B    30,03,'Amédée, Laura, Lorraine'
  1319. DC.B    30,04,'Pia, Pie, Robert'
  1320. DC.B    30,05,'Ferdinand(e)'
  1321. DC.B    30,06,'Martial'
  1322. DC.B    30,07,'Juliette'
  1323. DC.B    30,08,'Fiacre'
  1324. DC.B    30,09,'Jérôme'
  1325. DC.B    30,10,'Bianca, Bienvenue, Blanche'
  1326. DC.B    30,11,'André(e)'
  1327. DC.B    30,12,'Roger'
  1328. ; les 30 sont complets
  1329.  
  1330. DC.B    31,01,'Marcelle'
  1331. DC.B    31,03,'Benjamin(e)'
  1332. DC.B    31,05,'Visitation'
  1333. DC.B    31,07,'Ignace'
  1334. DC.B    31,08,'Aristide'
  1335. DC.B    31,10,'Quentin'
  1336. DC.B    31,12,'Colombe, Sylvestre'
  1337. ; les 31 sont complets
  1338.  
  1339. DC.B    $FF             ; Pour finir les données (ne pas enlever!!!)
  1340.